﻿using Mes.Application.DTO.Inputs.MasterData;
using Mes.Application.DTO.Results.MasterData;
using Mes.Domain.BoundedContext;

namespace Mes.Application.Services.MasterData
{
    public interface IMaterialBOMService
    {
        /// <summary>
        /// 添加物料清单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task AddMaterialBOMAsync(AddMaterialBOMInput input);

        /// <summary>
        /// 更新物料清单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task UpdateMaterialBOMAsync(UpdateMaterialBOMInput input);

        /// <summary>
        /// 删除物料清单
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task DeleteMaterialBOMsAsync(IList<int> ids);

        /// <summary>
        /// 分页查询物料清单
        /// </summary>
        /// <param name="input"></param>
        /// <returns>PagedItemsData<MaterialBOMResult></returns>
        Task<PagedItemsData<MaterialBOMResult>> GetMaterialBOMsAsync(GetMaterialBOMsInput input);

        /// <summary>
        /// 根据id查询物料清单
        /// </summary>
        /// <param name="id"></param>
        /// <returns>MaterialBOMResult</returns>
        Task<MaterialBOMResult> GetMaterialBOMAsync(int id);

        /// <summary>
        /// 移除物料清单下的物料
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task RemoveMaterialOfMaterialBOMAsync(RemoveMaterialOfMaterialBOMInput input);
    }
}
